
package com.zhike.common.vo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import com.zhike.common.model.Device;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 用户基本信息缓存信息对象类。
 * <p>
 * 本类当前仅用于高速缓存机制中。
 * 
 * @author Jack Jiang
 * @since 4.3
 */
@Data
public class UserInfo4Cache implements Serializable {
	@ApiModelProperty(value = "用户虚拟ID")
	private String fakeUid;

	@ApiModelProperty(value = "昵称")
	private String nickName;

	// 头像
	private String avatar;

	// 性别
	private Integer userSex;

	// 账号
	private String account;

	// 手机号
	private String phone;

	/**
	 * 当前使用中的设备ID
	 */
	private String currentDeviceId;

	// 当前使用的设备类型（名称）
	private String currentDeviceType;

	/** 用户的ios设备token（如果他在ios设备上登陆的话），用于ios设备的离线消息推送时 */
	private String iosDeviceToken;

	// 个性签名
	private String sign;

	// 设备列表
	private List<Device> deviceList = new ArrayList<>();

	// 好友列表
	private List<RosterVO> rosterList = new ArrayList<>();

	@ApiModelProperty(value = "允许通过手机号搜索我（1、开启 0、 关闭）")
	private String allowNicknameSearch;

	@ApiModelProperty(value = "允许通过账号搜索我（1、开启 0、 关闭）")
	private String allowPhoneSearch;

	@ApiModelProperty(value = "加我为朋友验证（1开启0关闭）")
	private String addFriendVerficate;

	@ApiModelProperty(value = "添加方式群聊（1开启0关闭）")
	private String addMethodGroup;

	@ApiModelProperty(value = "添加方式名片（1、开启 0、 关闭）")
	private String addMethodCard;

	@ApiModelProperty(value = "添加方式二维码（1、开启 0、 关闭）")
	private String addMethodQr;

	@ApiModelProperty(value = "消息通知")
	private String messageNotify;

	public String toString() {
		return "[uid=" + fakeUid + ",nickName=" + nickName + ", iosDeviceToken=" + iosDeviceToken + "]";
	}

	public static UserInfo4Cache create(String uid, String nickName, String iosDeviceToken) {
		UserInfo4Cache gmc = new UserInfo4Cache();
		gmc.setFakeUid(uid);
		gmc.setNickName(nickName);
		gmc.setIosDeviceToken(iosDeviceToken);
		return gmc;
	}
}
